/*
 * @Description: 函数的内部属性
 * @Author: zzj
 * @Date: 2021-09-02 15:40:10
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-02 17:12:46
 */

//函数的内部属性
//arguments 是一个类数组对象，包含了传入函数的所有参数
//类数组对象不是数组，不能使用数组的方法
//内部的下标跟数组类似，还需要有length，如果一个对象包含这两个特征，我们才把它称为类数组对象
function add(a,b){
    console.log(arguments);
    console.log(arguments.length);
    console.log(arguments[0]);
}
add(1,2);
//在arguments中有一个属性callee -> 执行拥有该arguments的函数
//递归函数   传入一个数10实现 10*9*8*...*2*1
//需要在某个时刻跳出循环
function dg(num){
    if (num<=1)
    return 1
    else
    return num * arguments.callee(num-1)
}
var res = dg(4);
console.log(res);